/*
* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd. 
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "plugin_manager/include/plugin_label.h"

#include "plugin_manager/include/plugin_info.h"
#include "utils/log/infer_log.h"

namespace OHOS {
namespace AI_STD {

std::mutex PluginLabel::instanceLock_;
PluginLabel *PluginLabel::instance_ = nullptr;

PluginLabel *PluginLabel::GetInstance()
{
    CHK_RET(instance_ != nullptr, instance_);

    std::lock_guard<std::mutex> lock(instanceLock_);
    CHK_RET(instance_ != nullptr, instance_);

    PluginLabel *temp = nullptr;
    AI_NEW_INSTANCE(temp, PluginLabel);
    CHK_RET(temp == nullptr, nullptr);

    instance_ = temp;
    return instance_;
}

void PluginLabel::ReleaseInstance()
{
    std::lock_guard<std::mutex> lock(instanceLock_);
    AI_DELETE_INSTANCE(instance_);
}

PluginLabel::PluginLabel() = default;

PluginLabel::~PluginLabel()
{

}

int PluginLabel::GetLibPath(const std::string &aid, long long &version, std::string &libPath)
{
    return RETCODE_SUCCESS;
}
} // namespace AI_STD
} // namespace OHOS
